package com.elitel.frame.base.service;

import java.util.List;
import java.util.Map;

import com.elitel.frame.main.entity.CfgDb;
import com.elitel.frame.main.entity.CfgTable;
import com.elitel.frame.main.entity.vo.KeyValueModelVo;
import com.elitel.frame.main.entity.vo.PageResponseVo;
import com.elitel.frame.main.entity.vo.ZTreeDataModelVo;

/**
 * @Description 数据库表配置服务接口
 * @author gyf
 */
public interface CfgTableService {
	
	/**
     * @Description 查询所有配置的数据库和表信息
     * @param 
     * @return ZTreeDataModelVo集合
     * @author gyf
     */
	List<ZTreeDataModelVo> getAllList();
	
	/**
	 * @Description 查询所有配置的数据库和视图信息
	 * @return ZTreeDataModelVo集合
	 * @author guoyanfei
	 */
	List<ZTreeDataModelVo> getViewList();
	
	/**
     * @Description 通过表标识查询表信息
     * @param dtConfigId 表标识
     * @return CfgTable实体
     * @author gyf
     */
	CfgTable queryCfgTable(String dtConfigId);
	
	/**
     * @Description 查询CfgTable中是否存在dtconfigId
     * @param dtconfigId 表标识
     * @return 数量
     * @author gyf
     */
	String getdtConfigIdIs(String dtconfigId);
	
	/**
     * @Description 新增数据表信息
     * @param cfgTable 实体对象
     * @return 新增结果
     * @author gyf
     */
	int addcfgTable(CfgTable cfgTable);
	
	/**
     * @Description 修改数据表信息
     * @param cfgTable 实体对象
     * @return 修改结果
     * @author gyf
     */
	int updatecfgTable(CfgTable cfgTable);
	
	/**
     * @Description 通过表标识查询CfgTable信息
     * @return CfgTable实体
     * @author gyf
     */
	CfgTable getInfoByDtconfigId(String dtConfigId);
	
	/**
	 * @Description 通过表标识和表类型查询表信息
	 * @param dtConfigId(表标识)
	 * @param tableType(表类型)
	 * @return CfgTable实体
	 * @author guoyanfei
	 */
	CfgTable getTableBydtConfigIdAndTableType(String dtConfigId,Integer tableType);
	
	/**
     * @Description 查询所有配置的数据库返回ZTreeData
     * @param 
     * @return ZTreeDataModelVo集合
     * @author gyf
     */
	List<ZTreeDataModelVo> getDabaBaseList();
	
	/**
	 * @description 通过数据库标识查询表信息
	 * @param key 数据库主键
	 * @author gyf
	 */
	List<CfgTable> getListbyConn(String key);
	
	/**
	 * @Description 通过数据库标识和表类型查询表信息
	 * @param dbkey(数据库标识)
	 * @param tableType(表类型)
	 * @return CfgTable集合
	 * @author guoyanfei
	 */
	List<CfgTable> getListByConnAndtableType(String dbkey,Integer tableType);
	
	/**
	 * @description 通过表标识删除表信息
	 * @param dtConfigId 表标识
	 * @author gyf
	 */
	int deleteTableInfo(String dtConfigId);
	/**
	 * 根据数据库名称获取当前表的集合
	 * @param dbid
	 * @return
	 */
	List<CfgTable> selectTableMap(String dbid);
	
	String selectTableName(String dbid);
	
	/**
	 * @Descirption 通过视图dtConfigId查询视图主表信息
	 * @param dtConfigId(视图dtConfigId)
	 * @return CfgTable实体
	 * @author guoyanfei
	 */
	CfgTable getDataViewBydtconfigId(String dtConfigId);

	/**
	 * show 通过dbkey分页查询配置的数据表信息
	 * create by guoyanfei on 2018/12/25
	 * @param dbkey 数据库主键
	 * @param paramtxt 参数条件
	 * @param pageNo 当前页
	 * @param pageSize 页大小
	 * @param tableType 表类型(1数据表,2数据视图)
	 * @return 数据集合
	 */
	PageResponseVo getCfgTablebyPage(String dbkey,String paramtxt,Integer pageNo,Integer pageSize,Integer tableType);

	PageResponseVo getCfgTableTreebyPage(String id, String paramtxt, Integer pageNo, Integer pageSize, String contentType);

	Integer getRecourdTotalBydbkey(String id, String paramtxt, String contentType);

	List<Map<String, String>> getJStreeParams(int mark);

	Integer updateCfgtableCount(Integer dataquantity, String dt_name, String dbnm);

	Integer refreshCfgtableCount();

	Integer refreshCenterinfo(Integer id,Double dataquantity);

	CfgTable getInfoByGuid(String guid);

	Map<String, String> getInfoByModuleDtName(int module, String dbName, String dtName);

	void loadTableInfo(CfgDb cfgDb, List<Map<String, String>> maplist, String moduleMark, Map<String, String> pkNameMap, Map<String, List<KeyValueModelVo>> allFieldMap);

	void batchInsertCfgTable(List<CfgTable> cfgTableList);

	List<CfgTable> getAllCfgTable();

	void refreshTableCount(String dbKey,List<Map<String, Object>> dbTableRecordCountList);

	int getCount();

	long getRecordCount();

}
